package com.nd.android.musicboxlibrary.ui.activity;

import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.common.utils.StarAppUtils;
import com.nd.android.musicboxlibrary.GlobalSetting;
import com.nd.android.musicboxlibrary.R;
import com.nd.android.musicboxlibrary.ui.common.BaseFragmentActivity;
import com.nd.android.musicboxlibrary.ui.common.UnMixable;
import com.nd.android.musicboxlibrary.ui.common.ViewInjectorWithReflect;
import com.nd.android.musicboxlibrary.ui.fragment.JayMusicFragment;
import com.nd.android.musicboxlibrary.ui.fragment.MyMusicFragment;
import com.nd.android.musicboxlibrary.ui.fragment.PlayListFragment;
import com.nd.android.musicboxlibrary.ui.vip.VipUtil;
import com.nd.android.musicboxlibrary.util.ConfigHelper;

/**
 * 音乐信息管理主页面
 * <br>
 * Created 2014年7月8日 上午12:00:26
 * 
 * @version
 * @author wat.ztag
 * 
 * @see
 */
public class MusicBox extends BaseFragmentActivity {

    private ViewHolder holder = new ViewHolder();

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:12:42
     * 
     * @version MusicBox
     * @author wat.ztag
     * 
     * @see
     */
    private class ViewHolder implements UnMixable {
        // View vMyMuisc;
        // View vJayMuisc;
        // View vPlaylist;
        // ImageView ivMyMusic;
        // ImageView ivJayMusic;
        // ImageView ivPlaylist;
        //我的音乐， Jay音乐， 播放列表
        TextView tv_my_music, tv_jay_music, tv_play_list;

        LinearLayout pnlPlayList, pnlJayMusic, pnlMyMusic;

        /**
         * 
         * <br>
         * Created 2014年10月21日 上午12:58:59
         * 
         * @return LinearLayout
         * @author wat.ztag
         */
        LinearLayout getPnlPlayList() {
            return pnlPlayList;
        }

        /**
         * 
         * <br>
         * Created 2014年10月21日 上午12:59:09
         * 
         * @param llPlayList LinearLayout
         * @author wat.ztag
         */
        void setPnlPlayList(LinearLayout llPlayList) {
            this.pnlPlayList = llPlayList;
        }

        /**
         * 
         * <br>
         * Created 2014年11月8日 下午11:20:04
         * 
         * @return LinearLayout
         * @author wat.ztag
         */
        LinearLayout getPnlJayMusic() {
            return pnlJayMusic;
        }

        /**
         * 
         * <br>
         * Created 2014年10月21日 上午12:59:16
         * 
         * @param llJayMusic LinearLayout
         * @author wat.ztag
         */
        void setPnlJayMusic(LinearLayout llJayMusic) {
            this.pnlJayMusic = llJayMusic;
        }

        /**
         * 
         * <br>
         * Created 2014年10月21日 上午12:59:20
         * 
         * @return LinearLayout
         * @author wat.ztag
         */
        LinearLayout getPnlMyMusic() {
            return pnlMyMusic;
        }

        /**
         * 
         * <br>
         * Created 2014年10月21日 上午12:59:23
         * 
         * @param llMyMusic LinearLayout
         * @author wat.ztag
         */
        void setPnlMyMusic(LinearLayout llMyMusic) {
            this.pnlMyMusic = llMyMusic;
        }

    }

    private FragmentManager frgM;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mbx_music_box);
        ViewInjectorWithReflect.injectView(holder, this);
        frgM = getSupportFragmentManager();
        initFragment(ConfigHelper.getInstance(this)
                .loadIntKey(ConfigHelper.CONFIG_KEY_TAB_INDEX, 2));
        dealBottomButtonsClickEvent();

        //字体
        StarAppUtils.setViewTypeFace(holder.tv_my_music, false);
        StarAppUtils.setViewTypeFace(holder.tv_jay_music, false);
        StarAppUtils.setViewTypeFace(holder.tv_play_list, false);
    }

    @Override
	protected void onResume() {
		super.onResume();
		//by jiangwb
		//初始化，是否VIP，的标签,把函数体放在resume中，
		//是为了能够进入VIP结束页面，并完成充值之后，用户返回到这个页面会重新网络判断一次。
		VipUtil.initVipTag(this);
    }
    
    // /**
    // *
    // * <br>
    // * Created 2014年9月15日 下午11:12:46
    // *
    // * @author wat.ztag
    // */
    // private void initFragment() {
    // FragmentTransaction ft = frgM.beginTransaction();
    // JayMusicFragment jayMusic = new JayMusicFragment();
    // ft.add(R.id.fragmentRoot, jayMusic, GlobalSetting.PARAMS_JAY_MUSIC);
    // ft.addToBackStack(GlobalSetting.PARAMS_JAY_MUSIC);
    // ft.commit();
    // holder.pnlJayMusic.setSelected(true);
    // }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:13:02
     * 
     * @param index int
     * @author wat.ztag
     */
    private void initFragment(int index) {
        ConfigHelper.getInstance(this).saveIntKey(ConfigHelper.CONFIG_KEY_TAB_INDEX, index);
        FragmentTransaction ft;
        switch (index) {
        case 0:
            popAllFragmentsExceptTheBottomOne();
            ft = frgM.beginTransaction();
            MyMusicFragment mmf = new MyMusicFragment();
            ft.add(R.id.fragmentRoot, mmf, GlobalSetting.PARAMS_MY_MUSIC);
            ft.addToBackStack(GlobalSetting.PARAMS_MY_MUSIC);
            ft.commit();
            initTabMy();
            break;
        case 1:
            popAllFragmentsExceptTheBottomOne();
            ft = frgM.beginTransaction();
            JayMusicFragment jayMusic = new JayMusicFragment();
            ft.add(R.id.fragmentRoot, jayMusic, GlobalSetting.PARAMS_JAY_MUSIC);
            ft.addToBackStack(GlobalSetting.PARAMS_JAY_MUSIC);
            ft.commit();
            initTabJay();
            break;
        case 2:
            popAllFragmentsExceptTheBottomOne();
            ft = frgM.beginTransaction();
            PlayListFragment plf = new PlayListFragment();
            ft.add(R.id.fragmentRoot, plf, GlobalSetting.PARAMS_PLAY_LIST);
            ft.addToBackStack(GlobalSetting.PARAMS_PLAY_LIST);
            ft.commit();
            initPlaylist();
            break;
        default:
            break;
        }
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:13:06
     * 
     * @author wat.ztag
     */
    private void dealBottomButtonsClickEvent() {
        findViewById(R.id.pnlJayMusic).setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                if (frgM.findFragmentByTag(GlobalSetting.PARAMS_JAY_MUSIC) != null
                        && frgM.findFragmentByTag(GlobalSetting.PARAMS_JAY_MUSIC).isVisible()) {
                    return;
                }
                initFragment(1);
            }
        });
        findViewById(R.id.pnlMyMusic).setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                if (frgM.findFragmentByTag(GlobalSetting.PARAMS_MY_MUSIC) != null
                        && frgM.findFragmentByTag(GlobalSetting.PARAMS_MY_MUSIC).isVisible()) {
                    return;
                }
                initFragment(0);
            }
        });
        findViewById(R.id.pnlPlayList).setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                if (frgM.findFragmentByTag(GlobalSetting.PARAMS_PLAY_LIST) != null
                        && frgM.findFragmentByTag(GlobalSetting.PARAMS_PLAY_LIST).isVisible()) {
                    return;
                }
                initFragment(2);
            }
        });
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:13:10
     * 
     * @author wat.ztag
     */
    public void popAllFragmentsExceptTheBottomOne() {
        for (int i = 0, count = frgM.getBackStackEntryCount(); i < count; i++) {
            frgM.popBackStack();
        }
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:13:13
     * 
     * @author wat.ztag
     */
    private void initTabJay() {
        // holder.vJayMuisc.setVisibility(View.VISIBLE);
        // holder.vMyMuisc.setVisibility(View.INVISIBLE);
        // holder.vPlaylist.setVisibility(View.INVISIBLE);

        holder.pnlJayMusic.setSelected(true);
        holder.pnlMyMusic.setSelected(false);
        holder.pnlPlayList.setSelected(false);
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:13:17
     * 
     * @author wat.ztag
     */
    private void initTabMy() {
        // holder.vJayMuisc.setVisibility(View.INVISIBLE);
        // holder.vMyMuisc.setVisibility(View.VISIBLE);
        // holder.vPlaylist.setVisibility(View.INVISIBLE);

        holder.pnlJayMusic.setSelected(false);
        holder.pnlMyMusic.setSelected(true);
        holder.pnlPlayList.setSelected(false);
    }

    /**
     * 
     * <br>
     * Created 2014年9月15日 下午11:13:26
     * 
     * @author wat.ztag
     */
    private void initPlaylist() {
        // holder.vJayMuisc.setVisibility(View.INVISIBLE);
        // holder.vMyMuisc.setVisibility(View.INVISIBLE);
        // holder.vPlaylist.setVisibility(View.VISIBLE);

        holder.pnlJayMusic.setSelected(false);
        holder.pnlMyMusic.setSelected(false);
        holder.pnlPlayList.setSelected(true);
    }

    @Override
    public void onBackPressed() {
        // if (frgM.findFragmentByTag(GlobalSetting.PARAMS_JAY_MUSIC) != null
        // && frgM.findFragmentByTag(GlobalSetting.PARAMS_JAY_MUSIC).isVisible()) {
        // MusicBox.this.finish();
        // } else {
        // super.onBackPressed();
        // initTabJay();
        // }
        MusicBox.this.finish();
    }

}
